﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PTTPOS_Solution.DAL;
using System.Drawing.Printing;
using System.Printing;

namespace PTTPOS_Solution
{
    public partial class F_BreakTable : Form
    {
        List<string> lstDt = new List<string>(); // Chứa dữ liệu các món trên lưới từ form Main chuyển qua
        public F_BreakTable(List<string> lstOrder, string id_ord,int idBan)
        {
            lstDt = lstOrder;
            id_order = id_ord;
            id_ban = idBan;
            InitializeComponent();
            for (int i = 0; i < lstDt.Count; i++)
            {
                LoadData(i);
            }
        }

        decimal phuthu_old = 0;
        string discount_value = "0";
        string surcharge_value = "0";
        string value_customer = "";
        string discount_type = "0";
        string surcharge_type = "0";
        string id_order = "";
        string id_surcharge = "";
        string id_customer = "";
        string id_discount = "";
        int id_ban;

        /// <summary>
        /// Hàm lấy thêm dữ liệu vào lưới order gốc dựa trên index của lstDt
        /// </summary>
        /// 
        private void LoadData(int intIndex)
        {
            ListViewItem itemMenuName = new ListViewItem(); // Tên món ăn
            ListViewItem.ListViewSubItem subitemAmount = new ListViewItem.ListViewSubItem(); // Số lượng
            ListViewItem.ListViewSubItem subitemPrice2 = new ListViewItem.ListViewSubItem(); // Đơn giá khuyến mãi
            ListViewItem.ListViewSubItem subitemMenuID = new ListViewItem.ListViewSubItem(); // Mã món ăn
            ListViewItem.ListViewSubItem subitemType = new ListViewItem.ListViewSubItem(); // Món trong menu hay món ngoài menu
            ListViewItem.ListViewSubItem subitemPrice = new ListViewItem.ListViewSubItem(); // Đơn giá gốc

            // Gán dữ liệu từ form main qua
            itemMenuName.Text = lstDt[intIndex].Split('|')[0];
            subitemAmount.Text = lstDt[intIndex].Split('|')[1];
            subitemPrice2.Text = lstDt[intIndex].Split('|')[2];
            subitemMenuID.Text = lstDt[intIndex].Split('|')[3];
            subitemType.Text = lstDt[intIndex].Split('|')[4];
            subitemPrice.Text = lstDt[intIndex].Split('|')[5];

            itemMenuName.SubItems.Add(subitemAmount);
            itemMenuName.SubItems.Add(subitemPrice2);
            itemMenuName.SubItems.Add(subitemMenuID);
            itemMenuName.SubItems.Add(subitemType);
            itemMenuName.SubItems.Add(subitemPrice);

            listView1.Items.Add(itemMenuName);
        }
        /// <summary>
        /// Hàm lấy thêm dữ liệu vào lưới sau khi tách món dựa trên index của lưới gốc
        /// </summary>
        ///
        private void LoadData2(string amount)
        {
            bool checkAvailableItem=false;
            int intIndexItem=0;
            foreach(ListViewItem items in lstOrder.Items)
            {
                if (items.Text == listView1.Items[Index].Text)
                {
                    checkAvailableItem=true;
                    intIndexItem=items.Index;
                }
            }
            if (!checkAvailableItem)
            {
                ListViewItem itemMenuName = new ListViewItem(); // Tên món ăn
                ListViewItem.ListViewSubItem subitemAmount = new ListViewItem.ListViewSubItem(); // Số lượng
                ListViewItem.ListViewSubItem subitemPrice2 = new ListViewItem.ListViewSubItem(); // Đơn giá khuyến mãi
                ListViewItem.ListViewSubItem subitemMenuID = new ListViewItem.ListViewSubItem(); // Mã món ăn
                ListViewItem.ListViewSubItem subitemType = new ListViewItem.ListViewSubItem(); // Món trong menu hay món ngoài menu
                ListViewItem.ListViewSubItem subitemPrice = new ListViewItem.ListViewSubItem(); // Đơn giá gốc

                // Gán dữ liệu từ form main qua
                itemMenuName.Text = listView1.Items[Index].Text;
                subitemAmount.Text = amount;
               subitemPrice2.Text = listView1.Items[Index].SubItems[2].Text;
                subitemMenuID.Text = listView1.Items[Index].SubItems[3].Text;
                subitemType.Text = listView1.Items[Index].SubItems[4].Text;
                subitemPrice.Text = listView1.Items[Index].SubItems[5].Text;

                itemMenuName.SubItems.Add(subitemAmount);
                itemMenuName.SubItems.Add(subitemPrice2);
                itemMenuName.SubItems.Add(subitemMenuID);
                itemMenuName.SubItems.Add(subitemType);
                itemMenuName.SubItems.Add(subitemPrice);
                itemMenuName.Group = lstOrder.Groups[0];
                lstOrder.Items.Add(itemMenuName);
            }
            else
            {
                lstOrder.Items[intIndexItem].SubItems[1].Text = (Convert.ToInt32(lstOrder.Items[intIndexItem].SubItems[1].Text) + Convert.ToInt32(txtValue.Text)).ToString();
            }
        }

        /// <summary>
        /// Hàm lấy thêm dữ liệu vào lưới sau khi tách món dựa trên index của lưới 2
        /// </summary>
        ///
        private void LoadData3(string amount)
        {
            bool checkAvailableItem=false;
            int intIndexItem=0;
            foreach(ListViewItem items in listView1.Items)
            {
                if(items.Text==lstOrder.Items[Index2].Text)
                {
                    checkAvailableItem=true;
                    intIndexItem=items.Index;
                }
            }
            if (!checkAvailableItem)
            {
                ListViewItem itemMenuName = new ListViewItem(); // Tên món ăn
                ListViewItem.ListViewSubItem subitemAmount = new ListViewItem.ListViewSubItem(); // Số lượng
                ListViewItem.ListViewSubItem subitemPrice2 = new ListViewItem.ListViewSubItem(); // Đơn giá khuyến mãi
                ListViewItem.ListViewSubItem subitemMenuID = new ListViewItem.ListViewSubItem(); // Mã món ăn
                ListViewItem.ListViewSubItem subitemType = new ListViewItem.ListViewSubItem(); // Món trong menu hay món ngoài menu
                ListViewItem.ListViewSubItem subitemPrice = new ListViewItem.ListViewSubItem(); // Đơn giá gốc
                
                // Gán dữ liệu từ form main qua
                itemMenuName.Text = lstOrder.Items[Index2].Text;
                subitemAmount.Text = amount;
                subitemPrice2.Text = lstOrder.Items[Index2].SubItems[2].Text;
                subitemMenuID.Text = lstOrder.Items[Index2].SubItems[3].Text;
                subitemType.Text = lstOrder.Items[Index2].SubItems[4].Text;
                subitemPrice.Text = lstOrder.Items[Index2].SubItems[5].Text;

                itemMenuName.SubItems.Add(subitemAmount);
                itemMenuName.SubItems.Add(subitemPrice2);
                itemMenuName.SubItems.Add(subitemMenuID);
                itemMenuName.SubItems.Add(subitemType);
                itemMenuName.SubItems.Add(subitemPrice);

                listView1.Items.Add(itemMenuName);
            }
            else
            {
                listView1.Items[intIndexItem].SubItems[1].Text = (Convert.ToInt32(listView1.Items[intIndexItem].SubItems[1].Text) + Convert.ToInt32(txtValue.Text)).ToString();
            }
        }
        private void btnConfirm_Click(object sender, EventArgs e)
        {
            Confirm();
        }
        private void Confirm()
        {
            if (lstOrder.Items.Count > 0)
            {
                    if (MessageBox.Show("Bạn muốn tính tiền bàn này không?", "Pay", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                    {

                        bool chk_print = false; //Biến kiểm tra tồn tại của máy in ( true: tồn tại / false: không tồn tại )
                        bool chk_queue = false; //Biến kiểm tra dữ liệu in trong queue ( true: trống / false: có dữ liệu )

                        PrintDocument prtDocument = new PrintDocument(); // Khởi tạo 1 đối tượng dùng để thao tác in ấn.
                        if (lstOrder.Items.Count > 0)
                        {
                            // Tạo 1 sự kiện PrintPage, để định nghĩa nội dung trang in
                            prtDocument.PrintPage += prtDocument_PrintPage;

                            //Lấy tên máy in trong bảng company làm máy in bill
                            prtDocument.PrinterSettings.PrinterName =
                                Print_DA.findNameprinterbyID(Company_DA.getcompany().Rows[0]["printbill"].ToString());

                            // Duyệt tên các máy in được cài đặt trong máy để kiểm tra sự tồn tại của máy in.
                            foreach (string item in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
                            {
                                if (item == prtDocument.PrinterSettings.PrinterName)
                                {
                                    chk_print = true;

                                    //Kiểm tra dữ liệu in có nằm trong queue chưa được in không
                                    PrintQueue queues = null;
                                    PrintServer printserver = new PrintServer();
                                    queues = printserver.GetPrintQueue(prtDocument.PrinterSettings.PrinterName);
                                    if (queues.NumberOfJobs > 0)
                                    {
                                        MessageBox.Show("Lỗi máy in " + prtDocument.PrinterSettings.PrinterName + ", in không thành công", "Err");
                                        chk_queue = false;
                                    }
                                    else
                                    {
                                        chk_queue = true;
                                    }
                                }
                            }
                        }
                        else
                        {
                            chk_print = true; chk_queue = true;
                        }
                        if (chk_print && chk_queue) // Kiểm tra tồn tại máy in Và dữ liệu in trong queue
                        {
                            // Ở đây phải xét thêm 1 lần nữa vì trường hợp bàn có order nhưng đã hủy hết món nên sẽ không thực hiện in hóa đơn
                            if (lstOrder.Items.Count > 0)
                                prtDocument.Print();

                            // Lưu dữ liệu từ bảng order tạm qua bảng order chính
                            Order_DA.AppendOrder(id_order);

                            if (listView1.Items.Count == 0)
                            {
                                Orderdetails_DA.AppendOrderdetails(id_order);
                                Orderdetail2s_DA.AppendOrderdetail2s(id_order);

                                // Xóa dữ liệu trong order bảng tạm
                                Orderdetail2s_pro_DA.delete_pro1(id_order);
                                Orderdetails_pro_DA.delete_pro1(id_order);
                                Order_pro_DA.DeleteOrder_pro(id_order);
                                Table_DA.updatetableWithstatus(id_ban.ToString(), "0");
                            }
                            else
                            {
                                List<string> lstIdMenu = new List<string>();
                                List<string> lstProductName = new List<string>();
                                bool chkSame = false;
                                foreach (ListViewItem items in lstOrder.Items)
                                {
                                    foreach (ListViewItem item2 in listView1.Items)
                                    {
                                        if (item2.Text.Equals(items.Text))
                                        {
                                            chkSame = true;
                                            break;
                                        }
                                    }
                                    if (items.SubItems[4].Text == "0")
                                    {
                                        lstIdMenu.Add(items.SubItems[3].Text + "|" + items.SubItems[1].Text + "|" + (chkSame?"true":"false"));
                                    }
                                    else
                                    {
                                        lstProductName.Add(items.Text + "|" + items.SubItems[1].Text + "|" + (chkSame ? "true" : "false"));
                                    }
                                }
                                Orderdetails_DA.AppendOrderdetails(id_order, lstIdMenu);
                                Orderdetail2s_DA.AppendOrderdetail2s(id_order, lstProductName);

                                
                                Orderdetail2s_pro_DA.update_pro1(id_order, lstProductName);
                                Orderdetails_pro_DA.update_pro1(id_order, lstIdMenu);

                                Order_pro_DA.Update_Pro_BreakTable(id_order);
                            }
                            //Reset dữ liệu tĩnh trên form
                            lstOrder.Items.Clear();
                            lblTongTien.Text = "0";
                            lblPhuThu.Text = "0";
                            lblTongGiam.Text = "0";
                        }
                        else
                        {
                            if (!chk_print)
                                MessageBox.Show("Không tìm thấy máy in", "Print Err");

                            // Hiện report tĩnh khi không có máy in.
                            Report.frmReport rp = new Report.frmReport();
                            rp.action = 2;
                            rp.id_order = id_order;
                            rp.Show();
                        }
                this.Close();
                DialogResult = DialogResult.Yes;
                    }
            }
            else
            {
                MessageBox.Show("Danh sách tách món còn trống", "Thông báo");
            }
        }
        void prtDocument_PrintPage(object sender, PrintPageEventArgs e) // Phương thức định nghĩa trang in của Tính tiền / Tạm tính
        {
            Graphics gp = e.Graphics; // Khai báo 1 đối tượng hình ảnh.

            int startX = 1; // Định nghĩa lề trái của nội dung
            int startY = 5; // Định nghĩa lề trên của nội dung
            int offset = 18;// Định nghĩa bề dày của nội dung

            Font font = new System.Drawing.Font("Courier New", 10); // Định nghĩa font
            Brush brush = new SolidBrush(Color.Black); // Định nghĩa brush ( liên quan về màu chữ, nét chữ, ... )

            DataTable tbl = new DataTable(); // Bảng chứa dữ liệu của orderdetail
            DataTable tbl2 = new DataTable(); // Bảng chứa dữ liệu của orderdetail2

            if (listView1.Items.Count == 0)
            {
                tbl = Order_pro_DA.GetlistOrder_pro(id_order);
                tbl2 = Order_pro_DA.GetlistOrder2_pro(id_order);
            }
            else
            {
                List<string> lstProductName = new List<string>();
                List<string> lstidOrder = new List<string>();
                foreach (ListViewItem items in lstOrder.Items)
                {
                    if (items.SubItems[4].Text == "0")
                    {
                        lstidOrder.Add(items.SubItems[3].Text + "|" + items.SubItems[1].Text + "|" + lblPhuThu.Text + "|" + lblTongGiam.Text + "|" + lblTongTien.Text);
                    }
                    else
                    {
                        lstProductName.Add(items.Text + "|" + items.SubItems[1].Text + "|" + lblPhuThu.Text + "|" + lblTongGiam.Text + "|" + lblTongTien.Text);
                    }
                }
                tbl = Order_pro_DA.GetlistOrder_pro(id_order,lstidOrder);
                tbl2 = Order_pro_DA.GetlistOrder2_pro(id_order,lstProductName);
            }

            DataTable tblCompany = new DataTable(); // Bảng chứa dữ liệu của bảng company
            tblCompany = Company_DA.getcompany();

            //Xét sự tồn tại của đường dần logo trong bảng company
            if (System.IO.File.Exists(Application.StartupPath + "\\" + Account_DA.companyLogo))
            {
                // Draw logo ra bill
                Image i = Image.FromFile(Application.StartupPath + "\\" + Account_DA.companyLogo);
                gp.DrawImage(i, 75, 0, 150, 150);
                offset += 110;
            }

            gp.DrawString(tblCompany.Rows[0]["Companyname"].ToString(), new System.Drawing.Font("Courier New", 12), brush, startX + 10, startY + offset);
            offset += 20;
            gp.DrawString("Địa chỉ: " + tblCompany.Rows[0]["Address"].ToString(), font, brush, startX, startY + offset);
            offset += 30;
            gp.DrawString("MST: " + tblCompany.Rows[0]["Tax"].ToString(), font, brush, startX, startY + offset);
            offset += 20;
            gp.DrawString("ĐT: " + tblCompany.Rows[0]["Phone"].ToString(), font, brush, startX, startY + offset);
            offset += 20;
            gp.DrawString("HÓA ĐƠN TÍNH TIỀN", new System.Drawing.Font("Courier New", 12, FontStyle.Bold), brush, startX + 40, startY + offset);
            DataTable tbl_fn = new DataTable();
            if (tbl.Rows.Count > 0)
                tbl_fn = tbl;
            else
                tbl_fn = tbl2;
            offset += 30;
            gp.DrawString("HD Số: " + tbl_fn.Rows[0]["id"].ToString().PadRight(10) + "Bàn: " + tbl_fn.Rows[0]["Nametable"].ToString(), font, brush, startX, startY + offset);
            offset += 20;
            gp.DrawString("Ngày: " + tbl_fn.Rows[0]["Orderdate"].ToString(), font, brush, startX, startY + offset);
            offset += 20;
            gp.DrawString("NV: " + tbl_fn.Rows[0]["Fullname"].ToString(), font, brush, startX, startY + offset);
            offset += 20;
            gp.DrawString("KH: " + (tbl_fn.Rows[0]["Fullname1"].ToString() == "" ? "  ____" : tbl_fn.Rows[0]["Fullname1"].ToString()), font, brush, startX, startY + offset);
            offset += 20;
            gp.DrawString("--------------------------------", font, brush, startX, startY + offset);
            offset += 20;
            foreach (DataRow row in tbl.Rows)
            {
                string s = "               ";
                string product = "";
                decimal cost = (decimal)row["Price"];
                product = row["Name"].ToString();
                if (product.Length < 15)
                {
                    product += s.Substring(0, s.Length - product.Length);
                }
                else if (product.Length > 15)
                {
                    product = product.Substring(0, 12) + "...";
                }
                string productline = product.PadRight(10) + ("x" + row["Amount"].ToString()).PadLeft(5) + cost.ToString("N0").PadLeft(12);
                gp.DrawString(productline, font, brush, startX, startY + offset);
                offset += 18;
            }
            foreach (DataRow row in tbl2.Rows)
            {
                string s = "               ";
                string product = "";
                decimal cost = (decimal)row["Price"];
                product = row["Name"].ToString();
                if (product.Length < 15)
                {
                    product += s.Substring(0, s.Length - product.Length);
                }
                else if (product.Length > 15)
                {
                    product = product.Substring(0, 12) + "...";
                }
                string productline = product.PadRight(15) + ("x" + row["Amount"].ToString()) + cost.ToString("N0").PadLeft(12);
                gp.DrawString(productline, font, brush, startX, startY + offset);
                offset += 18;
            }
            gp.DrawString("--------------------------------", font, brush, startX, startY + offset);
            offset += 20;
            gp.DrawString("".PadRight(5) + "Giảm giá: ".PadLeft(10) + (Convert.ToDecimal(tbl_fn.Rows[0]["total_discount"])).ToString("N0").PadLeft(17), font, brush, startX, startY + offset);
            offset += 20;
            gp.DrawString("".PadRight(5) + "Phụ thu: ".PadLeft(10) + (Convert.ToDecimal(tbl_fn.Rows[0]["total_surcharge"])).ToString("N0").PadLeft(17), font, brush, startX, startY + offset);
            offset += 20;
            gp.DrawString("".PadRight(5) + "Tổng cộng: ".PadLeft(10) + (Convert.ToDecimal(tbl_fn.Rows[0]["total_price"])).ToString("N0").PadLeft(16), new System.Drawing.Font("Courier New", 10, FontStyle.Bold), brush, startX, startY + offset);
            offset += 40;
            gp.DrawString("Cám ơn quý khách! ", font, brush, startX + 55, startY + offset);
            offset += 20;
            gp.DrawString("", font, brush, startX + 40, startY + offset);
        }
        private void lblClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        int Index = 0; // Biến chứa index của lưới gốc
        private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
        {
            listView1.Items[Index].ForeColor = Color.Black; // Gán màu của item cũ thành màu đen
            foreach (ListViewItem items in lstOrder.Items)
            {
                if (items.ForeColor == Color.FromArgb(0, 192, 192))
                {
                    lstOrder.Items[items.Index].ForeColor = Color.Black; // Gán màu của item cũ của lưới gốc thành màu đen
                }
            }
            listView1.Items[e.ItemIndex].ForeColor = Color.FromArgb(0, 192, 192);  // Gán màu của item cũ thành màu xanh
            Index = e.ItemIndex; // Lấy giá trị index của item mới.
            StatusWork = "LeftToRight";
        }

        private void listView1_MouseClick(object sender, MouseEventArgs e) // Click chuột trên lưới
        {
            txtValue.Text = listView1.Items[Index].SubItems[1].Text; // Gán số lượng vào textbox
            txtValue.Focus();
            txtValue.SelectAll(); // Bôi đen dữ liệu trên textbox.
            lblTitle.Text = "Số lượng";
        }
        string StatusWork = ""; // Trạng thái công việc
        private void txtAmount_KeyDown(object sender, KeyEventArgs e) // Sự kiện enter trên textbox
        {
            try
            {
                if (e.KeyCode == Keys.Enter) // Textbox nhận phím Enter.
                {
                    if (StatusWork == "LeftToRight")
                    {
                        int i = Convert.ToInt32(txtValue.Text); // Để bắt Catch chuỗi nhập không phải số
                        if (i > Convert.ToInt32(listView1.Items[Index].SubItems[1].Text) || i<1)
                        {
                            MessageBox.Show("Số lượng bị vượt quá hoặc bé hơn 1", "Thông báo");
                        }
                        else
                        {
                            //Trừ số lượng của lưới gốc với số lượng trên textbox
                            listView1.Items[Index].SubItems[1].Text = (Convert.ToInt32(listView1.Items[Index].SubItems[1].Text) - Convert.ToInt32(txtValue.Text)).ToString();
                            LoadData2(txtValue.Text); // Load dòng đó vào lưới 2 ( lưới sau khi tách món )
                            if (listView1.Items[Index].SubItems[1].Text == "0") // Nếu số lượng trừ ra = 0
                            {
                                listView1.Items.RemoveAt(Index); // Xóa dòng đó trong lưới gốc
                                Index = 0; // Trả giá trị index của lưới gốc về 0
                            }
                            tinhtong();
                            ResetData();
                            StatusWork = "";
                        }
                    }
                    else if (StatusWork == "RightToLeft")
                    {
                        int i = Convert.ToInt32(txtValue.Text);// Để bắt Catch chuỗi nhập không phải số
                        if (i > Convert.ToInt32(lstOrder.Items[Index].SubItems[1].Text) || i < 1)
                        {
                            MessageBox.Show("Số lượng bị vượt quá hoặc bé hơn 1", "Thông báo");
                        }
                        else
                        {
                            //Trừ số lượng của lưới 2 với số lượng trên textbox
                            lstOrder.Items[Index2].SubItems[1].Text = (Convert.ToInt32(lstOrder.Items[Index2].SubItems[1].Text) - Convert.ToInt32(txtValue.Text)).ToString();
                            LoadData3(txtValue.Text); // Load dòng đó vào lưới gốc ( lưới sau khi tách món )
                            if (lstOrder.Items[Index2].SubItems[1].Text == "0") // Nếu số lượng trừ ra = 0
                            {
                                lstOrder.Items.RemoveAt(Index2); // Xóa dòng đó trong lưới gốc
                                Index2 = 0;// Trả giá trị index của lưới 2 về 0
                            }
                            tinhtong();
                            ResetData();
                            StatusWork = "";
                        }
                    }
                    else if (StatusWork == "SC")
                    {
                        if (string.IsNullOrEmpty(txtValue.Text))
                        {
                            MessageBox.Show("Chưa nhập giá trị", "Thông báo");
                        }
                        else
                        {
                            long i = Convert.ToInt64(txtValue.Text);// Để bắt Catch chuỗi nhập không phải số
                            surcharge_value = txtValue.Text;
                            surcharge_type = "2";
                            tinhtong();
                            //if (lstOrder.Groups[1].Items.Count == 0)
                            //{
                            //    Order_pro_DA.UpdateOrder_pro_surcharge2(id_order, Convert.ToDecimal(lblPhuThu.Text), Convert.ToDecimal(lblTongTien.Text));
                            //}
                            ResetData();
                        }
                    }
                    else if (StatusWork == "DP")
                    {
                        if (string.IsNullOrEmpty(txtValue.Text))
                        {
                            MessageBox.Show("Chưa nhập giá trị", "Thông báo");
                        }
                        else
                        {
                            long i = Convert.ToInt64(txtValue.Text);
                            if (i < 100)
                            {
                                discount_value = txtValue.Text;
                                discount_type = "1";
                                tinhtong();
                                //if (lstOrder.Groups[1].Items.Count == 0)
                                //{
                                //    if (id_discount != "")
                                //    {
                                //        Discounts_DA.UpdateDiscount(id_discount, "1", txtValue.Text);
                                //        Order_pro_DA.UpdateOrder_pro_Discount(id_order, id_discount, Convert.ToDecimal(lblTongGiam.Text), Convert.ToDecimal(lblTongTien.Text));
                                //    }
                                //    else
                                //    {
                                //        Discounts_DA.InsertDiscount("1", txtValue.Text);
                                //        Order_pro_DA.UpdateOrder_pro_Discount(id_order, Discounts_DA.GetMaxDiscount(), Convert.ToDecimal(lblTongGiam.Text), Convert.ToDecimal(lblTongTien.Text));
                                //    }

                                //}
                                StatusWork = "";
                                ResetData();
                            }
                            else
                                MessageBox.Show("Phần trăm không được quá 100", "Thông báo");
                        }
                    }
                    else if (StatusWork == "DV")
                    {
                        if (string.IsNullOrEmpty(txtValue.Text))
                        {
                            MessageBox.Show("Chưa nhập giá trị", "Thông báo");
                        }
                        else
                        {
                            long i = Convert.ToInt64(txtValue.Text);
                            if (i < Convert.ToDecimal(lblTongTien.Text))
                            {
                                //chk = true;
                                discount_value = txtValue.Text;
                                discount_type = "2";
                                tinhtong();
                                //if (lstOrder.Groups[1].Items.Count == 0)
                                //{
                                //    if (id_discount != "")
                                //    {
                                //        Discounts_DA.UpdateDiscount(id_discount, "2", txtValue.Text);
                                //        Order_pro_DA.UpdateOrder_pro_Discount(id_order, id_discount, Convert.ToDecimal(lblTongGiam.Text), Convert.ToDecimal(lblTongTien.Text));
                                //    }
                                //    else
                                //    {
                                //        Discounts_DA.InsertDiscount("2", txtValue.Text);
                                //        Order_pro_DA.UpdateOrder_pro_Discount(id_order, Discounts_DA.GetMaxDiscount(), Convert.ToDecimal(lblTongGiam.Text), Convert.ToDecimal(lblTongTien.Text));
                                //    }

                                //}
                                //txtValue.MaxLength = 500;
                                //lblValTitle.Text = "Tìm món ăn";
                                txtValue.Text = "";
                                StatusWork = "findMenu";
                                //this.Controls.Find("keynum", true)[0].Visible = false;
                            }
                            else
                            {
                                MessageBox.Show("Số tiền giảm vượt quá giá hóa đơn");
                                //this.Controls.Find("keyboard", true)[0].Visible = false;
                                thaydoi = true;
                            }
                        }
                    }
                    else if (StatusWork == "DPD")
                    {
                        if (string.IsNullOrEmpty(txtValue.Text))
                        {
                            MessageBox.Show("Chưa nhập giá trị", "Thông báo");
                        }
                        else
                        {
                            long i = Convert.ToInt64(txtValue.Text);
                            if (i <= 100)
                            {
                                //chk = true;
                                if (txtValue.Text != "0")
                                {
                                    lstOrder.SelectedItems[0].SubItems[2].Text = (Convert.ToDecimal(lstOrder.SelectedItems[0].SubItems[5].Text) * ((decimal)100 - Convert.ToDecimal(txtValue.Text)) * (decimal)0.01).ToString("N0");
                                    if (lstOrder.SelectedItems[0].Text.Substring(0, 1) != "#")
                                        lstOrder.SelectedItems[0].Text = "#" + lstOrder.SelectedItems[0].Text;
                                }
                                else
                                {
                                    lstOrder.SelectedItems[0].SubItems[2].Text = lstOrder.SelectedItems[0].SubItems[5].Text;
                                    if (lstOrder.SelectedItems[0].Text.Substring(0, 1) == "#")
                                        lstOrder.SelectedItems[0].Text = lstOrder.SelectedItems[0].Text.Remove(0, 1);
                                }
                                tinhtong();

                                //if (lstOrder.Groups[1].Items.Count == 0)
                                //{
                                //    if (lstOrder.SelectedItems[0].SubItems[4].Text == "0")
                                //    {
                                //        Orderdetails_pro_DA.UpdateOrderdetails_pro_Price(id_order, id_menu, Convert.ToDecimal(lstOrder.SelectedItems[0].SubItems[2].Text));
                                //        Orderdetails_pro_DA.UpdateOrderdetails_pro_Price(id_order, id_menu, Convert.ToDecimal(lstOrder.SelectedItems[0].SubItems[2].Text));
                                //    }
                                //    else
                                //        Orderdetail2s_pro_DA.UpdateOrderdetail2s_pro_Price(lstOrder.SelectedItems[0].SubItems[3].Text, lstOrder.SelectedItems[0].Text, Convert.ToDecimal(lstOrder.SelectedItems[0].SubItems[2].Text));
                                //    Order_pro_DA.UpdateOrder_pro_DiscountDetail(id_order, Convert.ToDecimal(lblTongGiam.Text), Convert.ToDecimal(lblTongTien.Text));
                                //}

                                //txtValue.MaxLength = 500;
                                //lblValTitle.Text = "Tìm món ăn";
                                txtValue.Text = "";
                                StatusWork = "findMenu";
                                //this.Controls.Find("keynum", true)[0].Visible = false;
                                thaydoi = true;
                            }
                            else
                                MessageBox.Show("Phần trăm không được quá 100", "Thông báo");
                        }
                    }
                    else if (StatusWork == "DVD")
                    {
                        if (string.IsNullOrEmpty(txtValue.Text))
                        {
                            MessageBox.Show("Chưa nhập giá trị", "Thông báo");
                        }
                        else
                        {
                            long i = Convert.ToInt64(txtValue.Text);
                            if (i <= Convert.ToDecimal(lstOrder.SelectedItems[0].SubItems[2].Text))
                            {
                                //chk = true;
                                if (txtValue.Text != "0")
                                {
                                    lstOrder.SelectedItems[0].SubItems[2].Text = (Convert.ToDecimal(lstOrder.SelectedItems[0].SubItems[5].Text) - Convert.ToDecimal(txtValue.Text)).ToString("N0");
                                    if (lstOrder.SelectedItems[0].Text.Substring(0, 1) != "#")
                                        lstOrder.SelectedItems[0].Text = "#" + lstOrder.SelectedItems[0].Text;
                                }
                                else
                                {
                                    lstOrder.SelectedItems[0].SubItems[2].Text = lstOrder.SelectedItems[0].SubItems[5].Text;
                                    if (lstOrder.SelectedItems[0].Text.Substring(0, 1) == "#")
                                        lstOrder.SelectedItems[0].Text = lstOrder.SelectedItems[0].Text.Remove(0, 1);
                                }
                                tinhtong();
                                //if (lstOrder.Groups[1].Items.Count == 0)
                                //{
                                //    if (lstOrder.SelectedItems[0].SubItems[4].Text == "0")
                                //    {
                                //        Orderdetails_pro_DA.UpdateOrderdetails_pro_Price(id_order, id_menu, Convert.ToDecimal(lstOrder.SelectedItems[0].SubItems[2].Text));
                                //        Orderdetails_pro_DA.UpdateOrderdetails_pro_Price(id_order, id_menu, Convert.ToDecimal(lstOrder.SelectedItems[0].SubItems[2].Text));
                                //    }
                                //    else
                                //        Orderdetail2s_pro_DA.UpdateOrderdetail2s_pro_Price(lstOrder.SelectedItems[0].SubItems[3].Text, lstOrder.SelectedItems[0].Text, Convert.ToDecimal(lstOrder.SelectedItems[0].SubItems[2].Text));
                                //    Order_pro_DA.UpdateOrder_pro_DiscountDetail(id_order, Convert.ToDecimal(lblTongGiam.Text), Convert.ToDecimal(lblTongTien.Text));
                                //}

                                thaydoi = true;
                                //txtValue.MaxLength = 500;
                                //lblValTitle.Text = "Tìm món ăn";
                                txtValue.Text = "";
                                StatusWork = "findMenu";
                                //this.Controls.Find("keynum", true)[0].Visible = false;
                            }
                            else
                            {
                                MessageBox.Show("Số tiền giảm vượt quá giá món ăn");
                                //this.Controls.Find("keynum", true)[0].Visible = false;
                                thaydoi = true;
                            }
                        }
                    }
                    else if (StatusWork == "C")
                    {
                        //chk = true;
                        Custome_DA.findCustomer(txtValue.Text);
                        if (Custome_DA.ListCustomer.Rows.Count > 0)
                        {
                            id_customer = txtValue.Text;
                            value_customer = Custome_DA.ListCustomer.Rows[0][5].ToString();
                            tinhtong();
                            //if (lstOrder.Groups[1].Items.Count == 0)
                            //{
                            //    Order_pro_DA.UpdateOrder_pro_Customer(id_order, id_customer, Convert.ToDecimal(lblTongGiam.Text), Convert.ToDecimal(lblTongTien.Text));
                            //}
                            //txtValue.MaxLength = 500;
                            //lblValTitle.Text = "Tìm món ăn";
                            txtValue.Text = "";
                            StatusWork = "findMenu";
                            //this.Controls.Find("keyboard", true)[0].Visible = false;
                        }
                        else
                        {
                            MessageBox.Show("Mã khách hàng không tồn tại", "Err");
                            //chk = false;
                        }
                    }
                }
            }
            catch (FormatException)
            {
                MessageBox.Show("Chuỗi nhập chưa đúng định dạng", "Thông báo");
            }
        }
        /// <summary>
        /// Reset dữ liệu sau khi enter trên textbox
        /// </summary>
        private void ResetData()
        {
            txtValue.MaxLength = 500;
            lblTitle.Text = "";
            txtValue.Text = "";
            if (this.Controls.Find("Keyboard", true).Length > 0)
            {
                this.Controls.Find("Keyboard", true)[0].Visible = false;
            }
        }
        private void tinhtong()
        {
            decimal tonggia = 0, giagoc = 0, giagiam = 0, phuthu = 0, tonggia2 = 0, giagoc2 = 0;

            if (value_customer != "" || discount_value != "" || surcharge_value != "")
            {
                foreach (ListViewItem a in lstOrder.Items)
                {
                    if (a.Group.Name == "1")
                    {
                        if (a.Text.Substring(0, 1) != "#")
                        {
                            tonggia += Convert.ToDecimal(a.SubItems[2].Text) * Convert.ToDecimal(a.SubItems[1].Text);
                            tonggia2 += Convert.ToDecimal(a.SubItems[2].Text) * Convert.ToDecimal(a.SubItems[1].Text);
                        }
                        else
                        {
                            giagiam += (Convert.ToDecimal(a.SubItems[5].Text) - Convert.ToDecimal(a.SubItems[2].Text)) * Convert.ToDecimal(a.SubItems[1].Text);
                            giagoc += Convert.ToDecimal(a.SubItems[2].Text) * Convert.ToDecimal(a.SubItems[1].Text);
                            giagoc2 += Convert.ToDecimal(a.SubItems[2].Text) * Convert.ToDecimal(a.SubItems[1].Text);
                        }
                    }
                    if (a.Group.Name == "2")
                    {
                        if (a.Text.Substring(0, 1) != "#")
                        {
                            tonggia += Convert.ToDecimal(a.SubItems[2].Text) * Convert.ToDecimal(a.SubItems[1].Text);
                        }
                        else
                        {
                            giagiam += (Convert.ToDecimal(a.SubItems[4].Text) - Convert.ToDecimal(a.SubItems[2].Text)) * Convert.ToDecimal(a.SubItems[1].Text);
                            giagoc += Convert.ToDecimal(a.SubItems[2].Text) * Convert.ToDecimal(a.SubItems[1].Text);
                        }
                    }
                }
                if (value_customer != "")
                {
                    lblTongGiam.Text = ((tonggia * Convert.ToDecimal(value_customer) * (decimal)0.01) + giagiam).ToString("N0");
                    lblTongTien.Text = ((tonggia * (100 - Convert.ToDecimal(value_customer)) * (decimal)0.01) + giagoc).ToString("N0");
                }
                else if (discount_type == "1")
                {
                    lblTongGiam.Text = ((tonggia * Convert.ToDecimal(discount_value) * (decimal)0.01) + giagiam).ToString("N0");
                    lblTongTien.Text = ((tonggia * (100 - Convert.ToDecimal(discount_value)) * (decimal)0.01) + giagoc).ToString("N0");
                }
                else if (discount_type == "2")
                {
                    lblTongGiam.Text = (Convert.ToDecimal(discount_value) + giagiam).ToString("N0");
                    lblTongTien.Text = Convert.ToDecimal((tonggia + giagoc) - Convert.ToDecimal(discount_value)).ToString("N0");
                }
                else
                {
                    lblTongGiam.Text = (giagiam).ToString("N0");
                    lblTongTien.Text = Convert.ToDecimal(tonggia + giagoc).ToString("N0");
                }
                if (surcharge_type == "1" && lblPhuThu.Text == "0")
                {
                    phuthu_old = (tonggia + giagoc) * Convert.ToDecimal(surcharge_value) * (decimal)0.01;
                    lblPhuThu.Text = Convert.ToDecimal(phuthu_old).ToString("N0");
                    lblTongTien.Text = Convert.ToDecimal(Convert.ToDecimal(lblTongTien.Text) + Convert.ToDecimal(lblPhuThu.Text)).ToString("N0");
                }
                else if (surcharge_type == "1" && lblPhuThu.Text != "0")
                {
                    if (id_order != "")
                    {
                        string value = Order_pro_DA.FindSurcharge_pro(id_order);
                        if (value != "")
                        {
                            if (phuthu_old == 0)
                            {
                                phuthu_old = Convert.ToDecimal((tonggia2 + giagoc2) * Convert.ToDecimal(value) * (decimal)0.01);
                            }
                            phuthu = Convert.ToDecimal(lblPhuThu.Text) - phuthu_old;
                            phuthu_old = Convert.ToDecimal((tonggia + giagoc) * Convert.ToDecimal(surcharge_value) * (decimal)0.01);
                            lblPhuThu.Text = Convert.ToDecimal(((tonggia + giagoc) * Convert.ToDecimal(surcharge_value) * (decimal)0.01) + phuthu).ToString("N0");
                        }
                        else
                        {
                            lblPhuThu.Text = Convert.ToDecimal(((tonggia + giagoc) * Convert.ToDecimal(surcharge_value) * (decimal)0.01) + Convert.ToDecimal(lblPhuThu.Text)).ToString("N0");
                        }

                    }
                    else
                    {
                        phuthu = Convert.ToDecimal(lblPhuThu.Text) - phuthu_old;
                        phuthu_old = Convert.ToDecimal((tonggia + giagoc) * Convert.ToDecimal(surcharge_value) * (decimal)0.01);
                        lblPhuThu.Text = Convert.ToDecimal(((tonggia + giagoc) * Convert.ToDecimal(surcharge_value) * (decimal)0.01) + phuthu).ToString("N0");
                    }
                    lblTongTien.Text = Convert.ToDecimal(Convert.ToDecimal(lblTongTien.Text) + Convert.ToDecimal(lblPhuThu.Text)).ToString("N0");
                }
                else
                {
                    lblPhuThu.Text = (Convert.ToDecimal(surcharge_value) + Convert.ToDecimal(lblPhuThu.Text)).ToString("N0");
                    lblTongTien.Text = (Convert.ToDecimal(lblTongTien.Text) + Convert.ToDecimal(lblPhuThu.Text)).ToString("N0");
                }
            }
            else
            {
                foreach (ListViewItem a in lstOrder.Items)
                {
                    tonggia += Convert.ToDecimal(a.SubItems[2].Text) * Convert.ToDecimal(a.SubItems[1].Text);
                }
                lblTongGiam.Text = "0";
                lblTongTien.Text = tonggia.ToString("N0");
                lblPhuThu.Text = "0";
            }
        }
        private void lstOrder_MouseClick(object sender, MouseEventArgs e)
        {
            txtValue.Text = lstOrder.Items[Index2].SubItems[1].Text; // Gán số lượng vào textbox
            txtValue.Focus();
            txtValue.SelectAll(); // Bôi đen dữ liệu trên textbox.
            lblTitle.Text = "Số lượng";
        }
        int Index2 = 0; // Biến index của lưới 2
        private void lstOrder_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
        {
            lstOrder.Items[Index2].ForeColor = Color.Black; // Gán màu của item cũ thành màu đen
            foreach(ListViewItem items in listView1.Items)
            {
                if (items.ForeColor == Color.FromArgb(0, 192, 192))
                {
                    listView1.Items[items.Index].ForeColor = Color.Black; // Gán màu của item cũ của lưới gốc thành màu đen
                }
            }
            lstOrder.Items[e.ItemIndex].ForeColor = Color.FromArgb(0, 192, 192);  // Gán màu của item cũ thành màu xanh
            Index2 = e.ItemIndex; // Lấy giá trị index của item mới.
            StatusWork = "RightToLeft";
        }
        bool chk_surcharge = false; // Kiểm tra khi đã click vô nút phụ thu
        private void lblSurcharge_Click(object sender, EventArgs e)
        {
            try
            {
                if (chk_surcharge)
                {
                    foreach (Control ctrl in flowLayoutPanel1.Controls)
                    {
                        if (ctrl.Name != "lblCancelSwap" && ctrl.Name != "lblCancelCompile" && ctrl.Tag != null && ctrl.Tag.ToString() != "2")
                        {
                            ctrl.Visible = true;

                        }
                        else
                            ctrl.Visible = false;
                    }
                    flowLayoutPanel1.Controls.RemoveByKey("lblOther");

                    for (int i = 0; i < Surcharge_DAL.ListSurchargeReason.Rows.Count; i++)
                    {
                        Label lbl3 = new Label();
                        lbl3.Name = Surcharge_DAL.ListSurchargeReason.Rows[i]["id"].ToString();
                        lbl3.BackColor = Color.FromArgb(0, 192, 192);
                        lbl3.Text = Surcharge_DAL.ListSurchargeReason.Rows[i]["Reason"].ToString();
                        lbl3.Size = new Size(114, 70);
                        lbl3.Tag = Surcharge_DAL.ListSurchargeReason.Rows[i]["Rebateform"].ToString() + "/" + Surcharge_DAL.ListSurchargeReason.Rows[i]["Value"].ToString(); ;
                        lbl3.Font = new Font("Microsoft Sans Serif", 13);
                        lbl3.Margin = new System.Windows.Forms.Padding(3, 3, 0, 0);
                        lbl3.TextAlign = ContentAlignment.MiddleCenter;
                        lbl3.Click += lbl_Click;
                        bool chk = false;
                        foreach (Control ctrl2 in flowLayoutPanel1.Controls)
                        {
                            if (ctrl2.Name == lbl3.Name && ctrl2.Tag != null && ctrl2.Name != "lblBack" && ctrl2.Name != "lblOther")
                            {
                                chk = true;
                                break;
                            }
                        }
                        if (!chk)
                        {
                            flowLayoutPanel1.Controls.Add(lbl3);
                        }
                    }
                    Label lbl2 = new Label();
                    lbl2.Name = "lblOther";
                    lbl2.BackColor = Color.FromArgb(0, 192, 192);
                    lbl2.Text = "Khác";
                    lbl2.Tag = "1";
                    lbl2.Size = new Size(114, 70);
                    lbl2.Margin = new System.Windows.Forms.Padding(3, 3, 0, 0);
                    lbl2.Font = new Font("Microsoft Sans Serif", 13);
                    lbl2.TextAlign = ContentAlignment.MiddleCenter;
                    lbl2.Click += lbl_Click;
                    flowLayoutPanel1.Controls.Add(lbl2);
                }
                else
                {
                    Surcharge_DAL.GetListSurcharge();
                    Label lbl = new Label();
                    lbl.Name = "lblBack";
                    lbl.BackColor = Color.Teal;
                    lbl.Text = "Quay lại";
                    lbl.Tag = "1";
                    lbl.Margin = new System.Windows.Forms.Padding(3, 3, 0, 0);
                    lbl.Size = new Size(114, 70);
                    lbl.Font = new Font("Microsoft Sans Serif", 13);
                    lbl.TextAlign = ContentAlignment.MiddleCenter;
                    lbl.Click += lbl_Click;
                    flowLayoutPanel1.Controls.Add(lbl);
                    foreach (Control ctrl in flowLayoutPanel1.Controls)
                    {
                        if (ctrl.Tag == null)
                        {
                            ctrl.Visible = false;
                        }
                    }
                    for (int i = 0; i < Surcharge_DAL.ListSurchargeReason.Rows.Count; i++)
                    {
                        Label lbl3 = new Label();
                        lbl3.Name = Surcharge_DAL.ListSurchargeReason.Rows[i]["id"].ToString();
                        lbl3.BackColor = Color.FromArgb(0, 192, 192);
                        lbl3.Text = Surcharge_DAL.ListSurchargeReason.Rows[i]["Reason"].ToString();
                        lbl3.Size = new Size(114, 70);
                        lbl3.Tag = Surcharge_DAL.ListSurchargeReason.Rows[i]["Rebateform"].ToString() + "/" + Surcharge_DAL.ListSurchargeReason.Rows[i]["Value"].ToString(); ;
                        lbl3.Font = new Font("Microsoft Sans Serif", 13);
                        lbl3.Margin = new System.Windows.Forms.Padding(3, 3, 0, 0);
                        lbl3.TextAlign = ContentAlignment.MiddleCenter;
                        lbl3.Click += lbl_Click;
                        flowLayoutPanel1.Controls.Add(lbl3);
                    }
                    Label lbl2 = new Label();
                    lbl2.Name = "lblOther";
                    lbl2.BackColor = Color.FromArgb(0, 192, 192);
                    lbl2.Text = "Khác";
                    lbl2.Tag = "1";
                    lbl2.Size = new Size(114, 70);
                    lbl2.Margin = new System.Windows.Forms.Padding(3, 3, 0, 0);
                    lbl2.Font = new Font("Microsoft Sans Serif", 13);
                    lbl2.TextAlign = ContentAlignment.MiddleCenter;
                    lbl2.Click += lbl_Click;
                    flowLayoutPanel1.Controls.Add(lbl2);
                }
                chk_surcharge = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        } // Sự kiện nút phụ thu
        void lbl_Click(object sender, EventArgs e)
        {
            try
            {
                if (((Label)sender).Name == "lblBack")
                {
                    foreach (Control ctrl in flowLayoutPanel1.Controls)
                    {
                        if (ctrl.Name == "lblSurcharge" || ctrl.Name == "lblCustomer" || ctrl.Name == "lblDiscountPercent" || ctrl.Name == "lblDiscountPercentDetail" || ctrl.Name == "lblDiscountValue" || ctrl.Name == "lblDiscountValueDetail")
                        {
                            ctrl.Visible = true;
                        }
                        else
                            ctrl.Visible = false;
                    }
                    StatusWork = "";
                }
                else if (((Label)sender).Name == "lblOther")
                {
                    StatusWork = "SC";
                    lblTitle.Text = "Nhập giá trị phụ thu";
                    txtValue.Focus();
                }
                else
                {
                    surcharge_type = ((Label)sender).Tag.ToString().Split('/')[0];
                    surcharge_value = ((Label)sender).Tag.ToString().Split('/')[1];
                    if (surcharge_type == "1")
                        id_surcharge = ((Label)sender).Name;
                    tinhtong();
                    if (lstOrder.Groups[1].Items.Count == 0)
                    {
                        if (id_surcharge != "")
                            Order_pro_DA.UpdateOrder_pro_surcharge(id_order, id_surcharge, Convert.ToDecimal(lblPhuThu.Text), Convert.ToDecimal(lblTongTien.Text));
                        else
                            Order_pro_DA.UpdateOrder_pro_surcharge2(id_order, Convert.ToDecimal(lblPhuThu.Text), Convert.ToDecimal(lblTongTien.Text));
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        bool chk_discount = false; // Biến kiểm tra món ăn có chương trình khuyến mãi hay không
        private void lblDiscountPercent_Click(object sender, EventArgs e)
        {
             try
            {
                if (lstOrder.Items.Count > 0)
                {
                    if (id_customer != "" || discount_value != "0")
                    {
                        if (MessageBox.Show("Đã có giảm giá, bạn muốn thay đổi không?", "Err", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            lblTitle.Text = "Nhập giá trị % cần giảm";
                            txtValue.MaxLength = 3;
                            StatusWork = "DP";
                            txtValue.Text = "";
                            txtValue.Focus();
                        }
                    }
                    else
                    {
                        lblTitle.Text = "Nhập giá trị % cần giảm";
                        txtValue.MaxLength = 3;
                        StatusWork = "DP";
                        txtValue.Text = "";
                        txtValue.Focus();
                    }

                }
                else
                    MessageBox.Show("Danh sách món còn trống","Thông báo");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void lblCustomer_Click(object sender, EventArgs e)
        {
            try
            {
                if (lstOrder.Items.Count > 0)
                {
                    if (id_customer != "" || discount_value != "0")
                    {
                        if (MessageBox.Show("Hóa đơn này đã có giảm giá, bạn muốn thay đổi không?", "Err", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            lblTitle.Text = "Nhập mã khách hàng";
                            StatusWork = "C";
                            txtValue.Text = "";
                            txtValue.Focus();
                        }
                    }
                    else
                    {
                        lblTitle.Text = "Nhập mã khách hàng";
                        txtValue.MaxLength = 3;
                        StatusWork = "C";
                        txtValue.Text = "";
                        txtValue.Focus();
                    }
                }
                else
                    MessageBox.Show("Bàn chưa có order");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        bool thaydoi = true;
        private void lblDiscountPercentDetail_Click(object sender, EventArgs e)
        {
            try
            {
                if (lstOrder.SelectedItems.Count > 0)
                {
                    bool chk = false;
                    if (lstOrder.SelectedItems[0].Text.Substring(0, 1) != "#")
                    {
                        chk = true;
                    }
                    else if (!chk_discount)
                    {
                        if (MessageBox.Show("Món này đã có giảm giá, bạn muốn thay đổi không?", "Err", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            chk = true;
                        }
                    }
                    else
                        MessageBox.Show("Món ăn này đang có chương trình khuyến mãi, không được thay đổi", "Err");
                    if (chk)
                    {
                        lblTitle.Text = "Nhập giá trị tiền cần giảm";
                        StatusWork = "DPD";
                        //showKeyboard();
                        //showKeyNum();
                        txtValue.Text = "";
                        txtValue.MaxLength = 8;
                        txtValue.Focus();
                        thaydoi = false;
                    }

                }
                else
                {
                    MessageBox.Show("Chưa chọn món để giảm giá");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void lblDiscountValueDetail_Click(object sender, EventArgs e)
        {
            try
            {
                if (lstOrder.SelectedItems.Count > 0)
                {
                    bool chk = false;
                    if (lstOrder.SelectedItems[0].Text.Substring(0, 1) != "#")
                    {
                        chk = true;
                    }
                    else if (!chk_discount)
                    {
                        if (MessageBox.Show("Món này đã có giảm giá, bạn muốn thay đổi không?", "Err", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            chk = true;
                        }
                    }
                    else
                        MessageBox.Show("Món ăn này đang có chương trình khuyến mãi, không được thay đổi", "Err");
                    if (chk)
                    {
                        lblTitle.Text = "Nhập giá trị tiền cần giảm";
                        StatusWork = "DVD";
                        //showKeyboard();
                        //showKeyNum();
                        txtValue.Text = "";
                        txtValue.MaxLength = 8;
                        txtValue.Focus();
                        thaydoi = false;
                    }

                }
                else
                {
                    MessageBox.Show("Chưa chọn món để giảm giá");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void lblDiscountValue_Click(object sender, EventArgs e)
        {
            try
            {
                if (lstOrder.Items.Count > 0)
                {
                    if (id_customer != "" || discount_value != "0")
                    {
                        if (MessageBox.Show("Hóa đơn này đã có giảm giá, bạn muốn thay đổi không?", "Err", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            lblTitle.Text = "Nhập giá trị tiền cần giảm";
                            txtValue.MaxLength = 8;
                            txtValue.Text = "";
                            txtValue.Focus();
                            StatusWork = "DV";
                            //showKeyboard();
                            //showKeyNum();
                        }
                    }
                    else
                    {
                        lblTitle.Text = "Nhập giá trị tiền cần giảm";
                        txtValue.MaxLength = 8;
                        txtValue.Text = "";
                        StatusWork = "DV";
                        //showKeyboard();
                        //showKeyNum();
                        txtValue.Focus();
                    }
                }
                else
                    MessageBox.Show("Chưa chọn bàn để giảm");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        } // Sự kiện nút giám giá phần trăm hóa đơn
    }
}
